package cn.itcast.dao;

import cn.itcast.pojo.Role;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleDao {

    /**
     * 保存用户基本信息
     *
     * @param role
     */
    void add(Role role);

    /**
     * 条件查询用户信息
     *
     * @param queryString
     * @return
     */
    Page<Role> selectByCondition(String queryString);

    /**
     * 根据用户id查询用户信息
     *
     * @param id
     * @return
     */
    Role findById(Integer id);


    /**
     * 根据Id更新用户基本信息
     *
     * @param role
     */
    void update(Role role);


    /**
     * 根据id删除用户信息
     *
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 查询所有角色数据
     *
     * @return
     */
    List<Role> findAll();





    /**
     * 查询角色下的菜单ID集合
     *
     * @param roleId
     * @return
     */
    Integer[] findMenuAssociationIds(Integer roleId);

    /**
     * 查询角色下的权限ID集合
     *
     * @param roleId
     * @return
     */
    Integer[] findPermissionAssociationIds(Integer roleId);

    /**
     * 设置角色和菜单的关联信息
     *
     * @param roleId
     * @param menuId
     */
    void setMenuAssociation(@Param("roleId")Integer roleId, @Param("menuId")Integer menuId);

    /**
     * 设置角色和权限的关联信息
     *
     * @param roleId
     * @param permissionId
     */
    void setPermissionAssociation(@Param("roleId")Integer roleId, @Param("permissionId")Integer permissionId);

    /**
     * 删除用户关联权限信息
     *
     * @param id
     */
    void deletePermissionAssociation(Integer id);

    /**
     * 删除用户关联菜单信息
     *
     * @param id
     */
    void deleteMenuAssociation(Integer id);

    /**
     * 查询该角色是否被用户引用
     *
     * @param id
     * @return
     */
    int selectRoleReferencedCount(Integer id);

    /**
     * 查询角色关键词
     * @param id 角色id
     * @return
     */
    String findKeywordById(Integer id);

    //void saveRoleAndRoles(@Param("roleId") String roleId, @Param("checkedRoleId") String checkedRoleId);


}
